package com.interest.business.mapper;

import java.util.List;
import com.interest.business.domain.InterestRedeemCode;
import com.interest.business.domain.vo.InterestCodeVo;
import com.interest.business.domain.vo.UserCouponVo;
import org.apache.ibatis.annotations.Param;

/**
 * 权益兑换码Mapper接口
 * 
 * @author ruoyi
 * @date 2024-03-23
 */
public interface InterestRedeemCodeMapper 
{
    /**
     * 查询权益兑换码
     * 
     * @param id 权益兑换码主键
     * @return 权益兑换码
     */
    public InterestRedeemCode selectInterestRedeemCodeById(String id);

    /**
     * 查询一个未分配的兑换码
     * @return
     */
    public InterestRedeemCode selectOneNotGrantCode(@Param("goodsNo") String goodsNo);

    /**
     * 查询指定兑换码
     *
     * @param code 权益兑换码
     * @return 结果
     */
    public InterestRedeemCode selectCodeByCode(@Param("code") String code);

    /**
     * 查询权益兑换码列表
     * 
     * @param interestRedeemCode 权益兑换码
     * @return 权益兑换码集合
     */
    public List<InterestCodeVo> selectInterestRedeemCodeList(InterestCodeVo interestRedeemCode);


    /**
     * 查询用户优惠券列表
     * @param mobile
     * @return
     */
    List<UserCouponVo> selectUserCoupons(@Param("mobile") String mobile);


    /**
     * 被领取的优惠券
     * @param mobile
     * @param id
     * @return
     */
    InterestCodeVo selectUserReceiveCoupon(@Param("mobile") String mobile,@Param("id")String id);
    /**
     * 新增权益兑换码
     * 
     * @param interestRedeemCode 权益兑换码
     * @return 结果
     */
    public int insertInterestRedeemCode(InterestRedeemCode interestRedeemCode);

    /**
     * 修改权益兑换码
     * 
     * @param interestRedeemCode 权益兑换码
     * @return 结果
     */
    public int updateInterestRedeemCode(InterestRedeemCode interestRedeemCode);

    /**
     * 删除权益兑换码
     * 
     * @param id 权益兑换码主键
     * @return 结果
     */
    public int deleteInterestRedeemCodeById(String id);

    /**
     * 批量删除权益兑换码
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteInterestRedeemCodeByIds(String[] ids);

    void insertBatch(List<InterestRedeemCode> codes);


    int releaseCouponToPool();

    int releaseCouponToPoolByOrderNo(String orderNo);
}
